﻿<?php
/* 	Classe Crud
	Desenvolvimento: Ricardo Oliveira.
	Criado em: 12/01/2012
	Modificado em 01/03/2012
	Descrição: Faz operações de inserção, alteração e exclusão de dados em bancos de dados MySQL.
*/
	require("class.conexao.php");
    class Crud{
        private $tabela;
        private $atributos;
        private $valores;
        private $condicao;
        private $atributo;
		public $linhas;
		private $rbusca;
		private $prefixo;
		public $lastId;
 
        function Crud(){
            //vazia
        }
 		
		//Insere dados na em uma tabela e atualiza a variavel lastId com o id da linha.
        function Inserir($tabela, $atributos, $valores, $prefixo){
        $this->tabela = $tabela;
        $this->atributos = $atributos;
        $this->valores = $valores;
		$this->prefixo = $prefixo;
            $tamanho = count($this->atributos);
            $str = "insert into $tabela (";
            for($i = 0; $i <$tamanho; $i++){
                $str .= $this->prefixo.$this->atributos[$i] ;
                if($i < $tamanho -1){
                   $str .= ", ";
                }
            }
 
            $str = $str . ") values (";
            for($j = 0; $j <$tamanho; $j++){
                 $str .= "'".$this->valores[$j]."'";
                 if($j < $tamanho -1){
                   $str .= ",";
                }
            }
            $str = $str . ")";
 
            $con = new Conexao;
            $querystr=mysql_query($str) or die(mysql_error());
			$this->lastId=mysql_insert_id();
			$this->linhas=mysql_affected_rows();
			return $querystr;
        }
 		
		//Exclui valores baseado em uma condição.
        function Excluir($tabela,$atributos, $condicao){
            $this->tabela = $tabela;
            $this->condicao = $condicao;
            $this->atributos = $atributos;
 
            $sql = "DELETE FROM $this->tabela WHERE $this->atributos = $this->condicao";
            $con = new Conexao;
            $r =mysql_query($sql);
			return ($r) ? true : false;
        }
 		
		//altera os dados de uma tabela
        function Altera($tabela, $prefixo='', $atributos, $valores, $condicao, $atributo){
            $this->tabela = $tabela;
            $this->atributos = $atributos;
            $this->valores = $valores;
            $this->condicao = $condicao;
            $this->atributo = $atributo;
            $tamanho = count($this->atributos);
            $str = "UPDATE $tabela  set ";
            for($i = 0; $i <$tamanho; $i++){
                $str .= $prefixo.$this->atributos[$i] ." = '". $this->valores[$i] ."'" ;
                if($i < $tamanho -1){
                   $str .= ",";
                }
            }
            $str .= " WHERE ".$prefixo.$this->condicao." = $this->atributo";
            $con = new Conexao;
            $ret=mysql_query($str) or die(mysql_error());
			$this->linhas = mysql_affected_rows($ret);
			return $ret;
        }
		
		//Busca valores em uma tabela e retorna seus valores.
        function Busca($tabela, $atributos, $valores, $prefixo="", $limit=10, $start=0, $acrescimo='', $operador="AND", $campos="*"){
            $this->tabela = $tabela;
            $this->atributos = $atributos;
            $this->valores = $valores;
			$this->prefixo = $prefixo;
            $tamanho = count($this->atributos);
            $str = "SELECT ".$campos." FROM $tabela  WHERE ";
            for($i = 0; $i < $tamanho; $i++){
                $str .= $this->prefixo .''. $this->atributos[$i] ." LIKE '". $this->valores[$i] ."'" ;
                if($i < $tamanho -1){
                   $str .= " ".$operador." ";
                }
            }
			if($this->atributos==''){
				$str = "SELECT ".$campos." FROM $tabela";
			}
            $str .= " ".$acrescimo." LIMIT ".$start.", ".$limit;
            $con = new Conexao;
			$buscados=mysql_query($str) or die("A query executada contêm um erro <br>". $str);
			$this->linhas=mysql_num_rows($buscados);
			if($this->linhas){
				$this->rbusca=$buscados;
			}
			return $this->rbusca;
        }
		
		//Executa um sql especifico no BD.
		public function executaQuery($query){
			if($query){
				$con = new Conexao;
				$retorno=mysql_query($query) or die(mysql_error());
				$this->linhas = mysql_num_rows($retorno);
			}else{
				$retorno = false;
			}
			return $retorno;
		}
		
		//cria um objeto a partir do resultado de a função Busca.
		public function criarObjeto($query){
			if($query){
				$retorno=mysql_fetch_object($query);
			}else{
				$retorno= NULL;
			}
			return $retorno;
		}
    }
?>